/**CopyRight[1990-2012]<lyc2877@gmail.com>
 */
#include "./include/MQueue.h"

CMQueue::CMQueue(int64_t in_lType) {
  m_lType = in_lType;
  m_nMsqid = msgget(COMMON_KEY, PERM | IPC_CREAT);

  if (-1 == m_nMsqid) {
    printf("Fatal error! Msg queue create error!\n");
    return;
  }
}

CMQueue::~CMQueue() {
}

int32_t CMQueue::send_msg(TMsg* in_pTMsg) {
  return msgsnd(m_nMsqid,
                in_pTMsg,
                sizeof(TMsg),
                0);
}

int32_t CMQueue::recv_msg(TMsg* out_pTMsg) {
  char buf[200];
  msgrcv(m_nMsqid, buf, sizeof(TMsg), m_lType, 0);
  memcpy(out_pTMsg, buf, sizeof(TMsg));
  return 0;
}
